回答:
${#1}長さ(文字数)で$1、関数の最初の引数です。
したがって(( ${#1} == 0 ))、最初の引数が空である(または未設定の場合、未設定のパラメーターは展開時に空として表示される)かどうかをテストする複雑な方法です。
空のパラメータをテストするための標準的な方法は次のとおりです。
[ -z "$1" ]
しかし、そこには、引数が関数に提供されているかどうかをチェックする意図があり、その場合の構文は次のようになります。
[ "$#" -eq 0 ]
(または(($# == 0))、スクリプトをksh / bash / zsh固有にする場合)。
ただし、どちらの場合でも、ボーンのようなシェルにはそのためのショートカットがあります。
test=${1:--} # set test to $1, or "-" if $1 is empty or not provided
test=${1--} # set test to $1, or "-" if $1 is not provided
引数が指定されていないときに(標準cat入力を-意味する)が渡されるように、それを他のテキストユーティリティに渡すことが目的である場合は、まったく必要ない可能性があります。
の代わりに:
getlable() {
test=${1--}
cat -- "$test"
}
ただやる:
getlable() {
cat -- "$@"
}
関数への引数のリストはそのままに渡されcatます。引数がない場合は、引数catを受け取りません(そして、単一の-引数であるかのようにstdinから読み取ります)。そして、1つ以上の引数がある場合、それらはそのままそのままに渡されcatます。
echo ${#1}値を確認するために、その前にそのステートメントを入力する気になりましたか?もしそうなら、あなたは一般的にその研究で見つけたものを質問に含めるべきであり、おそらくそれが役に立たなかった理由の説明を含めるべきです。