簡體   English   中英

如何從終端將參數傳遞給 shell 腳本中的 shell 命令

[英]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 $1output 然后,您可以使用echo $output打印出您的 output。

您可以在GNU Bash 參考手冊中閱讀有關 shell 擴展的更多信息。

暫無
暫無

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

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