簡體   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