bashでコマンドラインパラメータの次の引数にアクセスする方法は?

夢のの夢

私が持っているとしましょう:

for i in $@; do
    echo ${i+1}
done

これをシェル$ test.sh 3 5 8 4実行すると1 1 1 1$ {i + 1}が機能しない理由が出力されますか?コマンドライン引数のリストについて、次の引数にアクセスしようとしています。

user79743

シェルの各文字には特別な意味がある場合があります。

このコード${i+1}は「iに1を追加する」という意味ではありません。
意味を確認するには、次のコマンドを実行します。

LESS=+/'\{parameter\:\+word\}' man bash

そして読んでください:

${parameter:+word}
代替値を使用します。パラメータがnullまたは未設定の場合、何も置換されません。それ以外の場合は、単語の展開が置換されます。

そして少し上:

コロンを省略すると、設定されていないパラメーターに対してのみテストが行​​われます。

$iループによって設定された値と同様にfor i in $@;、「代替値」が置き換えられ1て出力されます。

引数の値に1を追加する場合は、次のようにします。

for    i
do     echo "$((i+1))"
done

in "$@"(そしてすべての拡張を引用することに慣れてください)の必要はありません

$ ./test.sh 3 5 8 4
4
6
9
5

次の引数。

しかし、それも「次の議論」ではありません。中心的な問題はループにあります。引数のインデックスではなく、ループ内の引数の値を使用しています。各引数のiiではなく、引数のインデックスをループする必要があります。何かのようなもの:

for (( i=1; i<=$#; i++)); do
    echo "${i}"
done

これが示すように、インデックスが出力されます。

$ ./test.sh 3 5 8 4
1
2
3
4

間接

位置の引数にアクセスするにはどうすればよい$iですか?:間接参照:

for (( i=1; i<=$#; i++)); do
    echo "${!i}"
done

!追加された単純なものを参照してください

これで、次のように実行されます。

$  ./test.sh  3 5 8 4
3
5
8
4

最終的解決。

そして、現在の引数と次の引数の両方を出力するには、次を使用します。

for (( i=1; i<=$#; i++)); do
    j=$((i+1))
    echo "${!i} ${!j}"
done

いいえ、変数の値を計算するより簡単な方法はありません$j


$ ./test.sh 3 5 8 4
3 5
5 8
8 4
4 

これはテキストでも機能します。

$ ./test.sh sa jwe yqs ldfgt
sa jwe
jwe yqs
yqs ldfgt
ldfgt 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

pytestでは、パラメータ化デコレータのコマンドライン引数にアクセスできますか?

分類Dev

Gradleタスクのコマンドライン引数にflywayパスワードを提供する方法は?

分類Dev

コマンドラインパラメータにアクセスする方法は?

分類Dev

文字列パラメータを含むbashスクリプトに指定されたすべてのコマンドライン引数をそのまま子プロセスに渡すにはどうすればよいですか?

分類Dev

同じコマンドライン引数に複数のパラメータを渡す方法は?

分類Dev

Gradleタスクを実行するときにコマンドラインで複数のパラメーターを渡す方法は?

分類Dev

Juliaのコマンドライン引数にアクセスする

分類Dev

IntelliJIDEAで提供された引数に対してメソッドまたはコンストラクターのパラメーター名を生成する方法

分類Dev

Spring構成でコマンドライン引数にアクセスする方法は?

分類Dev

UIオートメーションスクリプトがそれらにアクセスできるinstrumentsコマンドラインを介していくつかの引数を送信する方法はありますか?

分類Dev

コマンドラインから実行するときに、スクリプトでbash関数をパラメーターとして作成するための最良の方法は何ですか?

分類Dev

ポストパラメーターをコントローラーのアクションパラメーターにバインドする方法は?

分類Dev

コマンドライン引数をASPコアのスタートアップクラスに渡す

分類Dev

コマンドライン引数をgradleのメインクラスに渡す方法は?

分類Dev

コンストラクターで引数とパスに依存する型のパラメーター化を実現する方法は?

分類Dev

javascriptクラスコンストラクターの引数をインスタンスのプロパティに動的にマッピングする方法

分類Dev

SSISは、comアプリケーションプロセスタスク引数に複数のコマンドラインを追加します

分類Dev

スレッドのSpringbootのコマンドライン引数にアクセスする

分類Dev

スペースを含む単一のコマンドライン引数を解析するように bash スクリプトに指示する方法は?

分類Dev

変数を使用してWindowsコマンドファイルパラメータにアクセスする

分類Dev

gsscoderによってC#コマンドラインパーサーのバインドされていないパラメーターにアクセスするにはどうすればよいですか?

分類Dev

bashコマンドライン引数へのアクセス$ @ vs $ *

分類Dev

Dockerコマンドのパラメーター化されたBashエイリアスを作成する方法

分類Dev

nextjsのgetInitialPropsstatelesコンポーネントでルーターパラメータにアクセスする方法

分類Dev

bashのパラメーターを使用してコマンドをリダイレクトする方法は?

分類Dev

Kotlinで、インターフェイスに委任し、引数のないパブリックコンストラクターのみを提供する方法は?

分類Dev

PHPの他のメソッドにコンストラクター引数を提供する方法は?

分類Dev

ケーキビルド:元のコマンドライン引数文字列にアクセスしますか?

分類Dev

bashでコマンドライン引数をインターセプトして削除する方法

Related 関連記事

  1. 1

    pytestでは、パラメータ化デコレータのコマンドライン引数にアクセスできますか?

  2. 2

    Gradleタスクのコマンドライン引数にflywayパスワードを提供する方法は?

  3. 3

    コマンドラインパラメータにアクセスする方法は?

  4. 4

    文字列パラメータを含むbashスクリプトに指定されたすべてのコマンドライン引数をそのまま子プロセスに渡すにはどうすればよいですか?

  5. 5

    同じコマンドライン引数に複数のパラメータを渡す方法は?

  6. 6

    Gradleタスクを実行するときにコマンドラインで複数のパラメーターを渡す方法は?

  7. 7

    Juliaのコマンドライン引数にアクセスする

  8. 8

    IntelliJIDEAで提供された引数に対してメソッドまたはコンストラクターのパラメーター名を生成する方法

  9. 9

    Spring構成でコマンドライン引数にアクセスする方法は?

  10. 10

    UIオートメーションスクリプトがそれらにアクセスできるinstrumentsコマンドラインを介していくつかの引数を送信する方法はありますか?

  11. 11

    コマンドラインから実行するときに、スクリプトでbash関数をパラメーターとして作成するための最良の方法は何ですか?

  12. 12

    ポストパラメーターをコントローラーのアクションパラメーターにバインドする方法は?

  13. 13

    コマンドライン引数をASPコアのスタートアップクラスに渡す

  14. 14

    コマンドライン引数をgradleのメインクラスに渡す方法は?

  15. 15

    コンストラクターで引数とパスに依存する型のパラメーター化を実現する方法は?

  16. 16

    javascriptクラスコンストラクターの引数をインスタンスのプロパティに動的にマッピングする方法

  17. 17

    SSISは、comアプリケーションプロセスタスク引数に複数のコマンドラインを追加します

  18. 18

    スレッドのSpringbootのコマンドライン引数にアクセスする

  19. 19

    スペースを含む単一のコマンドライン引数を解析するように bash スクリプトに指示する方法は?

  20. 20

    変数を使用してWindowsコマンドファイルパラメータにアクセスする

  21. 21

    gsscoderによってC#コマンドラインパーサーのバインドされていないパラメーターにアクセスするにはどうすればよいですか?

  22. 22

    bashコマンドライン引数へのアクセス$ @ vs $ *

  23. 23

    Dockerコマンドのパラメーター化されたBashエイリアスを作成する方法

  24. 24

    nextjsのgetInitialPropsstatelesコンポーネントでルーターパラメータにアクセスする方法

  25. 25

    bashのパラメーターを使用してコマンドをリダイレクトする方法は?

  26. 26

    Kotlinで、インターフェイスに委任し、引数のないパブリックコンストラクターのみを提供する方法は?

  27. 27

    PHPの他のメソッドにコンストラクター引数を提供する方法は?

  28. 28

    ケーキビルド:元のコマンドライン引数文字列にアクセスしますか?

  29. 29

    bashでコマンドライン引数をインターセプトして削除する方法

ホットタグ

アーカイブ