繁体   English   中英

Shell脚本可打印元素列表

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM