[英]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.