0
我有以下腳本。bash中變量結尾處的echo asterix
#!/bin/bash
PHOTOS_DIR=$1
PHOTOS_LIST=$2
while read line
do
echo "line: ${line}"
pattern="*`echo \"$line\" | tr ' ' '*'`*"
echo "pattern: ${pattern}"
done <$PHOTOS_LIST
它給出了非常奇怪的輸出。例如:
line: 20121224-100 5777
*attern: *20121224-100*5777
line: 20121224-100 5778
*attern: *20121224-100*5778
我試着逃脫最後一個asterix字符,但它不工作。
line: 20121224-100 5777
\*ttern: *20121224-100*5777
line: 20121224-100 5778
\*ttern: *20121224-100*5778
如果我試圖在bash控制檯類似的事情,它工作得很好:
$ line='a b'
$ pattern="*`echo \"$line\" | tr ' ' '*'`*"
$ echo "pattern: ${pattern}"
pattern: *a*b*
什麼是錯誤的腳本?
我做了另一個測試。以下運作良好。
for line in "20121224-100 5777" "20121224-100 5778"
do
echo -e "line: ${line}"
pattern="*`echo \"$line\" | tr ' ' '*'`*"
echo -e "pattern: ${pattern}"
done
有這東西while read line
循環。但是什麼?
請看看:http://www.shellcheck.net/ – Cyrus
很好的工具。我以前不知道。我修復了錯誤,但沒有幫助。 – gumik