![](/img/trans.png)
[英]How to pass shell variables as Command Line Argument to a shell script
[英]How to pass argument to a shell command in shell script from terminal
我正在寫一個 shell 腳本practice.sh
。 我想將我的第一個參數$1
從命令行提供給腳本中的ls
命令。例如,如果我在終端中運行我的腳本$bash practice.sh *.mp3
.mp3 我想用於ls
命令的參數*.mp3
#!/bin/bash
output=$ls $1
它沒有任何幫助嗎?
你說你想要什么的明顯答案就是
#!/bin/bash
ls "$1"
它將運行ls
,將它(只是)第一個參數傳遞給腳本。
但是,您還說您想像這樣運行: practice.sh *.mp3
運行帶有許多arguments (不僅僅是一個)的腳本 - *.mp3
將擴展為所有 .mp3 文件中當前目錄。 為此,您可能想要更多類似的東西
#!/bin/bash
ls "$@"
這會將所有arguments 傳遞給您的腳本(不管有多少)到ls
命令。
這些腳本將運行ls
,其標准輸出連接到您的腳本的標准輸出連接到的任何內容,因此 output 將(可能)只出現在您的終端上。 如果您想捕獲ls
命令的 output (這樣您就可以用它做其他事情),您需要類似
#!/bin/bash
output=$(ls "$@")
它將使用所有 arguments 運行ls
,並在變量$output
中捕獲 output 。 然后,您可以使用該變量執行操作。
使用 shell 擴展將命令的 output 記錄在變量output
:
output=$(ls $1)
這將在變量 output 中記錄命令ls $1
的output
。 然后,您可以使用echo $output
打印出您的 output。
您可以在GNU Bash 參考手冊中閱讀有關 shell 擴展的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.