[英]How to check number of arguments using a bash script?
如何在腳本中格式化通過 bash 腳本傳遞的參數數量? 這是我目前所擁有的:
#!/bin/bash
echo "$# parameters"
echo "$@"
但我想格式化是使用一個函數,但每次運行它時,它都會作為 0 個參數返回:
#!/bin/bash
example()
{
echo "$# parameters"; echo "$@";
}
example
我是否錯誤地考慮了這一點?
您沒有將參數傳遞給您的函數。
#! /bin/bash
EXE=`basename $0`
fnA()
{
echo "fnA() - $# args -> $@"
}
echo "$EXE - $# Arguments -> $@"
fnA "$@"
fnA five six
輸出:
$ ./bash_args.sh one two three
bash_args.sh - 3 Arguments -> one two three
fnA() - 3 args -> one two three
fnA() - 2 args -> five six
不使用function
關鍵字是 POSIX 標准。 bash
支持它以實現ksh
兼容性。
編輯:根據戈登的評論引用"$@"
- 這可以防止重新解釋引用字符串中的所有特殊字符
第二個應該有效。 以下是我每天使用的幾個具有相同功能的類似示例。
function dc() {
docker-compose $@
}
function tf(){
if [[ $1 == "up" ]]; then
terraform get -update
elif [[ $1 == "i" ]]; then
terraform init
else
terraform $@
fi
}
function notes(){
if [ ! -z $1 ]; then
if [[ $1 == "header" ]]; then
printf "\n$(date)\n" >> ~/worknotes
elif [[ $1 == "edit" ]]; then
vim ~/worknotes
elif [[ $1 == "add" ]]; then
echo " • ${@:2}" >> ~/worknotes
fi
else
less ~/worknotes
fi
}
PS:OSX 我需要聲明function
您可能不需要在其他操作系統(如 Ubuntu)上
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.