echoエイリアスは、環境変数と最初のパラメータの間のスペースを印刷します。

echoエイリアスは、環境変数と最初のパラメータの間のスペースを印刷します。

奇妙な問題があります...アーチ設定を構成していますが、エイリアスの1つが機能しません...

alias es='echo $SCRIPTDEST/$1'

何らかの理由で$ SCRIPTDEST /と$ 1の間にスペースが印刷され、すべてが破損します。どうすれば解決できますか?

また、$ SCRIPTDESTは私のすべてのスクリプトの場所にすぎません。

また、役に立つと思われる関連出力のスクリーンショットは次のとおりです。他に必要なものがあれば教えてください。

一部のユーザーに適していないため、画像が削除されました。軽いホラー要素が含まれています。テキストに置き換えてください。

答え1

このような問題があります。Bashでいつエイリアスを使用し、いつスクリプトを使用し、いつ関数を作成しますか?多くを説明します。ただし、問題は具体的に解決できます。

とりわけ、Bashのエイリアスはエイリアスを置き換えます。ひもそして別のひも行をさらに処理する前に。ロジックはありません。$1特定の別名が1つもありません。ただ文字列の置き換え

エイリアス定義:

alias es='echo $SCRIPTDEST/$1'

今走ると

es foo

前のスペースを含め、次の内容はすべて保持されesます。結果は次のとおりです。echo $SCRIPTDEST/$1foo

echo $SCRIPTDEST/$1 foo

その後、さらに評価してください。$1これはシェルが考えるものであり、エイリアスとは何の関係もありません。説明を見ると、$1空の文字列に展開されるようです。変数は参照されません。これは別のエラーです。

あなたのアイデアがエイリアスの文脈にfooなると思います。それなら「との間の空白」$1と書くと、実際には「との間の空白」を意味するのです。これがすぐに間に入力するスペースです。$SCRIPTDEST/$1$SCRIPTDEST/$1fooesfoo

関数はパラメータを受け入れてそれを呼び出します$1$2次の関数は、別名で目的の操作を実行します。

unalias es
es () {
   printf '%s\n' "$SCRIPTDEST/$1"
}

追加の修正:引用するecho

関連情報