我正在撰寫一個小腳本來測驗我對比較運算子“=~”的正則運算式理解。我認為我的語法沒問題,但我不斷得到:
3:語法錯誤:“(”意外
這是我指向此語法錯誤的小腳本鏈接:
#!/bin/bash
inputsArr=("ab" "67" "7b7" "g" "67777" "07x7g7" "77777" "7777" "")
for input in ${inputsArr[@]}; do
if [[ "$1" =~ "$input" ]]; then
echo "$?"
fi
done
我嘗試在回圈中將一些“字串”與我的 arg1 或“$1”進行比較
uj5u.com熱心網友回復:
該代碼在 bash 中運行,您只需在正確的 shell 中運行它,您可以執行以下操作:
bash ./script.sh g
還可以輸入ps -p $$(not echo $SHELL) 以查看您當前所在的 shell:
例子:
# ps -p $$
PID TTY TIME CMD
25583 pts/0 00:00:00 sh
# exit
# ps -p $$
PID TTY TIME CMD
22538 pts/0 00:00:00 bash
- $SHELL 是告訴您當前用戶擁有什么,但您可以隨時更改,這就是為什么其他命令更有用的原因。
- Borne shell (sh) 不能很好地處理陣列。你必須使用評估。
- 將您的默認 shell 更改為 bash。參考:https ://www.tecmint.com/change-a-users-default-shell-in-linux/
uj5u.com熱心網友回復:
我只是用這個達到我的目標!
#!/bin/bash
inputsArr=("ab" "67" "7b7" "g" "67777" "07x7g7" "77777" "7777" "")
for input in ${inputsArr[@]}; do [[ "$input" =~ $1 ]]; echo "$?" ; done
我要感謝每一位在這個基本的 BASH 腳本問題上給我一些提示的人。沒有你,我當然不會以我自己的方式達到我的目標,很高興看到這種合作在行動。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/447747.html
下一篇:洗掉檔案命令不適用于空間名稱
