[英]Shell scripting to print list of elements
shell腳本中是否有任何類似於tcl中“ list”的命令? 我想將元素列表寫入文件(每個元素都在單獨的行中)。但是,如果元素與特定模式匹配,則其旁邊的元素和元素本身應打印在同一行中。 Shell腳本中是否有用於執行此操作的命令?
示例:我的字符串就像“執行命令運行abcd.v”一樣,我想將每個單詞寫在文件的不同行中,但是如果單詞是“ run”,則abcd.v和run必須打印在同一行中。 因此,輸出應為
execute
the
command
run abcd.v
如何在Shell腳本中執行此操作?
line="execute the command run abcd.v"
for word in $line # the variable needs to be unquoted to get "word splitting"
do
case $word in
run|open|etc) sep=" " ;;
*) sep=$'\n' ;;
esac
printf "%s%s" $word "$sep"
done
參見http://www.gnu.org/software/bash/manual/bashref.html#Word-Splitting
這是您可以在bash中執行的操作:
list
~/bin/
: List:
#!/bin/bash
# list
while [[ -n "$1" ]]
do
if [[ "$1" == "run" ]]; then
echo "$1 $2"
else
echo "$1"
fi
shift
done
這就是您可以在命令提示符下使用它的方式:
list execute the command run abcd.v > outputfile.txt
並且您的outputfile.txt
將寫為:
execute
the
command
run abcd.v
您可以使用以下腳本完成此操作。 這不是一個命令。 下面是一個for循環,其中包含一個if語句,用於檢查關鍵字run。 它不會追加換行符( echo -n
)。
for i in `echo "execute the command run abcd.v"`
do
if [ $i = "run" ] ; then
echo -n "$i " >> fileOutput
else
echo $i >> fileOutput
fi
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.