奇妙な問題があります...アーチ設定を構成していますが、エイリアスの1つが機能しません...
alias es='echo $SCRIPTDEST/$1'
何らかの理由で$ SCRIPTDEST /と$ 1の間にスペースが印刷され、すべてが破損します。どうすれば解決できますか?
また、$ SCRIPTDESTは私のすべてのスクリプトの場所にすぎません。
また、役に立つと思われる関連出力のスクリーンショットは次のとおりです。他に必要なものがあれば教えてください。
一部のユーザーに適していないため、画像が削除されました。軽いホラー要素が含まれています。テキストに置き換えてください。
答え1
このような問題があります。Bashでいつエイリアスを使用し、いつスクリプトを使用し、いつ関数を作成しますか?多くを説明します。ただし、問題は具体的に解決できます。
とりわけ、Bashのエイリアスはエイリアスを置き換えます。ひもそして別のひも行をさらに処理する前に。ロジックはありません。$1
特定の別名が1つもありません。ただ文字列の置き換え。
エイリアス定義:
alias es='echo $SCRIPTDEST/$1'
今走ると
es foo
前のスペースを含め、次の内容はすべて保持されes
ます。結果は次のとおりです。echo $SCRIPTDEST/$1
foo
echo $SCRIPTDEST/$1 foo
その後、さらに評価してください。$1
これはシェルが考えるものであり、エイリアスとは何の関係もありません。説明を見ると、$1
空の文字列に展開されるようです。変数は参照されません。これは別のエラーです。
あなたのアイデアがエイリアスの文脈にfoo
なると思います。それなら「との間の空白」$1
と書くと、実際には「との間の空白」を意味するのです。これがすぐに間に入力するスペースです。$SCRIPTDEST/
$1
$SCRIPTDEST/$1
foo
es
foo
関数はパラメータを受け入れてそれを呼び出します$1
。$2
次の関数は、別名で目的の操作を実行します。
unalias es
es () {
printf '%s\n' "$SCRIPTDEST/$1"
}