簡體   English   中英

替換成shell腳本

[英]Substitution in shell script

我喜歡在linux shell中評估以下內容

CMD_6='ls'
CMD_7='ls -l'
VER=6
CMD="CMD_"$VER

我期望$CMD執行CMD_6並列出目錄內容,但是會引發錯誤:

-bash: CMD_6: command not found

有人可以解釋如何進行替換嗎?

使用功能。

cmd_6 () { ls; }
cmd_7 () { ls -l; }
ver=6
cmd="cmd_$ver"
"$cmd"

cmd的值不應比單個函數或命令名稱更復雜:沒有參數,沒有其他shell語法。

...或使用別名:

$ alias cmd_6='ls'
$ ver=6
$ alias cmd="cmd_$ver"
$ alias
alias cmd='cmd_6'
alias cmd_6='ls'

其他答案解釋了如何使用函數和別名來實現它,但是可以通過變量來實現:

foo="ls -l" bar=/bin/bash
$foo $bar

輸出:

-rwxr-xr-x 1 root root 1099016 May 17  2017 /bin/bash

但這有點不同:

CMD="CMD_"$VER

要運行它,請執行以下操作:

eval \$$CMD

小心eval ,僅輸入已知或檢查的輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM