所以我知道我可以IFS在 read 陳述句中使用一個,但是否可以使用兩個。例如,如果我有文字
variable = 5 1;
print variable;
而且我有代碼將每個單詞拆分為一個陣列,但我也想在;空格和空格處拆分,如果出現的話。
這是到目前為止的代碼
INPUT="$1"
declare -a raw_parse
while IFS=' ' read -r -a raw_input; do
for raw in "${raw_input[@]}"; do
raw_parse =("$raw")
done
done < "$INPUT"
出來的東西:
declare -a raw_parse=([0]="variable" [1]="=" [2]="5" [3]=" " [4]="1;" [5]="print" [6]="variable;")
我想要的是:
declare -a raw_parse=([0]="variable" [1]="=" [2]="5" [3]=" " [4]="1" [5]=";" [6]="print" [7]="variable" [8]=";")
uj5u.com熱心網友回復:
GNU 的解決方法sed。這會在每個之前插入一個空格;并用空格替換每個換行符。
read -r -a raw_input < <(sed -z 's/;/ ;/g; s/\n/ /g' "$INPUT")
declare -p raw_input
輸出:
宣告 -a raw_input=([0]="變數" [1]="=" [2]="5" [3]=" " [4]="1" [5]=";" [6 ]="列印" [7]="變數" [8]=";")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/391887.html
上一篇:重復的id會出現一些空值
下一篇:問題理解bash腳本中的引數擴展
