[英]Why is my echo command behaving like this?
我是bash腳本的新手,我正在尋求幫助! 我在bash中有一點點東西,這並不能滿足我的要求(但幾乎沒有實現),而echo命令的行為對我來說似乎很奇怪,請看一下:
TST='test'
TEST="${ADDR[3]}"_"$TST"
echo $TEST
#result : _test
echo ${ADDR[3]}
#result : 5
您如何解釋這些結果? 提前致謝 :)
我的ADDR變量是這樣定義的:
#parsing the read line, split on whitespace
IFS=' ' read -ra ADDR <<< "$line"
這是我完整的腳本:
#!/bin/bash
NUMBER=2
{ read ;
while IFS= read -r line; do
echo "$NUMBER : $line"
IFS=' ' read -ra ADDR <<< "$line"
#If the countdown is set to 0, launch the task ans set it to init value
if [ ${ADDR[0]} == '0' ]; then
#task launching
echo `./${ADDR[1]}.sh ${ADDR[2]} &`
TST='test'
TEST=${ADDR[3]}_$TST
echo $TEST
VAR=$(echo -E "${ADDR[3]}" | tr -d '\n')
#countdown set to init value
sed -i "$NUMBER c $VAR ${ADDR[1]} ${ADDR[2]} ${ADDR[3]}" listing.txt
else
sed -i "$NUMBER c $((ADDR-1)) ${ADDR[1]} ${ADDR[2]} ${ADDR[3]}" listing.txt
fi
((NUMBER++))
done } < listing.txt
答:以下很好,
TEST="${ADDR[3]}"_"$TST"
雖然我會推薦。
TEST="${ADDR[3]}_${TST}"
您需要做的是在此語句之前轉儲${ADDR[3]}
並確認ADDR
保持期望值。 您也可以使用索引轉儲整個數組並確認所有條目
for ((i=0; i<${#ADDR[@]}; i++)); do
printf "ADDR[%3d] %s\n" "$i" "${ADDR[$i]}"
done
這將有助於隔離問題。 對不起,較早的答案。 教訓[睡覺第一:回答第二]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.