bash-array

bashでprintfを使用して@で配列を印刷すると、最初の要素だけが印刷されるのはなぜですか?
bash-array

bashでprintfを使用して@で配列を印刷すると、最初の要素だけが印刷されるのはなぜですか?

配列があります snapshots=(1 2 3 4) 私が走るとき printf "${snapshots[*]}\n" 期待どおりに印刷されます 1 2 3 4 しかし、私が走るとき printf "${snapshots[@]}\n" ただ印刷される 1 改行文字がありません。私の理解は、配列にアクセスすると@配列を拡張し、各要素が改行になるようにする必要がありますが、そうしないようprintfですecho。なぜこれですか? ...

Admin

bcを使用したbash配列の乗算
bash-array

bcを使用したbash配列の乗算

bcループを使用してインデックスを乗算し、派生値に配列値を乗算しようとしています。 #!/bin/bash n=10.0 bw=(1e-3 2.5e-4 1.11e-4 6.25e-5 4.0e-5 2.78e-5 2.04e-5 1.56e-5 1.29e-5 1.23e-5 1.0e-5) for k in {1..11};do a=$(echo "$n * $k" | bc) echo "A is $a" arn=${bw[k-1]} echo "Arn is $arn" b=$(echo "$arn * $...

Admin

zipアーカイブの内容を同時に抽出して削除する方法は?
bash-array

zipアーカイブの内容を同時に抽出して削除する方法は?

単一ファイル形式の複数の小さなファイルを含む大容量zipアーカイブ(> 180 GB)をSSDにダウンロードして抽出したいのですが、zipアーカイブと抽出されたコンテンツの両方を収容するのに十分な容量がありません。回答に記載されているzipコマンドを使用して、アーカイブから個々のファイルを抽出して削除できることを知っています。ここそしてここ。また、コマンドを使用してアーカイブ内のすべてのファイルの名前を取得し、上記のようにunzip -l結果を配列に保存することもできます。ここ、与えられた方法を使用して不要な値をフィルタリングします。ここ、上記のように...

Admin

配列配列から繰り返す配列を選択するには?
bash-array

配列配列から繰り返す配列を選択するには?

#!/usr/bin/bash ARGENT=("Nous devons économiser de l'argent." "Je dois économiser de l'argent.") BIENETRE=("Comment vas-tu?" "Tout va bien ?") aoarrs=("${ARGENT}" "${BIENETRE}") select arr in "${aoarrs[@]}"; do for el in "${arr[@]}"; do echo "$el" done break done ...

Admin

大きなインデックスを持つbash配列を起動するとどうなりますか?
bash-array

大きなインデックスを持つbash配列を起動するとどうなりますか?

bash "多次元"配列を作成しようとしているときに連想配列を使用するアイデアを見ましたが、最も簡単な方法は次のとおりです。 for i in 0 1 2 do for j in 0 1 2 do a[$i$j]="something" done done 値を設定して取得するのは簡単ですが、bashがインデックス00から22まで順番に要素にスペースを割り当てる場合(つまり、{0,1,2,3,4,...,21,22}の位置を割り当てます)意味)、そうではありません。実際の要素のセット:{00,01,02,10,11...

Admin

並列処理を使用して配列に追加することはできません。
bash-array

並列処理を使用して配列に追加することはできません。

parallel問題なくforループを使用すると、配列に追加できません。 並列例: append() { arr+=("$1"); } export -f append parallel -j 0 append ::: {1..4} declare -p arr 出力: -bash: declare: arr: not found ループの場合: for i in {1..4}; do arr+=("$i"); done declare -p arr 出力: declare -a arr=([0]="1" [1]="2" [2]="3" [3]="...

Admin

配列を作成して追加します。 mapfileはarr + =(input)と同じですか、それとも何かが欠けていますか?
bash-array

配列を作成して追加します。 mapfileはarr + =(input)と同じですか、それとも何かが欠けていますか?

mapfile利点がそれより大きい状況がありますかarr+=(input)? 簡単な例 マッピングファイルの配列名、arr: mkdir {1,2,3} mapfile -t arr < <(ls) declare -p arr 出力: declare -a arr=([0])="1" [1]="2" [2]="3") 編集する: 次のヘッダーを変更しました。本文にはy配列名がありますが、ヘッダーには名前があり、混乱をarr招く可能性があります。 y+=(入力) IFS=$'\n' y+=($(ls)) declare -p y 出...

Admin

Bash:スペースと引用符付きの文字列を配列に変換する
bash-array

Bash:スペースと引用符付きの文字列を配列に変換する

引用符の中に一連の文字列を出力する関数(私が作成したものではありません)があります。 command <args> “Foo” “FooBar” “Foo Bar” “FooBar/Foo Bar” 配列(Bash、BSD / Mac)に割り当てようとすると、4つではなく7つの要素が表示されます。たとえば、${array[2]}私にしなければならないgetですが、代わりに“Foo Bar”私が取得する”Foo次の要素はBar”.any要素です。いいえスペースはうまく機能します(例${array[0]}:「Foo」) 要素自体が空白(?)で区切...

Admin

Gnuパラレルを使用した配列要素の反復
bash-array

Gnuパラレルを使用した配列要素の反復

入力ファイルがありますが、名前.txt、1行に1単語: apple abble aplle 私のbashスクリプトで次のような出力を取得しようとしています。 apple and apple apple and abble apple and aplle abble and apple abble and abble abble and aplle aplle and apple aplle and abble aplle and aplle これは私のbashスクリプトです。 #!/usr/bin bash re...

Admin

Bash 4.4ローカル読み取り専用配列変数の範囲:バグ?
bash-array

Bash 4.4ローカル読み取り専用配列変数の範囲:バグ?

bash 4.4.20(1)を使用して実行すると、次のスクリプトが失敗します。 #!/bin/bash bar() { local args=("y") } foo() { local -r args=("x") bar } foo エラーがありますが、line 3: args: readonly variable読み取り後にbash 4.2.46(2)を使用して正常に実行することが意味があります。24.2。ローカル変数。 配列以外の変数を使用する次のスクリプトは問題なく実行されます。 #!/bin/bash bar() { local...

Admin

bashのファイル配列のリストを日付で並べ替え、パラメータ制限をバイパスします。
bash-array

bashのファイル配列のリストを日付で並べ替え、パラメータ制限をバイパスします。

そのため、bashシェルにファイル配列のリストがあり、配列の最初のファイルである最も古いファイルから始めて、変更日ごとに配列内のすべてのファイルをソートしたいと思います。しかし、元の配列をソートして変更する代わりに、ソートされた結果が別の配列にあることを望みます。私は見たこのスレッド配列はファイルではなく変数なので修正しましたが、次のコマンドを試しました。 new_array=( $(ls -t $(printf '%s\n' "${array_list[@]}")) ) しかし、配列が大きすぎてlsが引数リストを「長すぎる」と報告します。 最も古いファイ...

Admin

Bash配列で小数値を使用しようとすると停止する
bash-array

Bash配列で小数値を使用しようとすると停止する

以下は簡単なテストコードです。 #!bin/bash cpm=(0 1 0.094) lv=1 attack=5 defense=9 stamina=16 echo $((cpm[lv])) mycpm=$((cpm[lv])) #mycpm=`echo "0.094" | bc -l` cq=`echo "$attack*$defense*1/10*sqrt($stamina)*2^2*$mycpm" | bc -l` echo $cq ターミナル出力: bash testing.sh 1 72.00000000000000000000 わかりました...

Admin

最初のインデックスと最後のインデックスの間のすべての要素を取得するためにインデックス配列を分割する方法は?
bash-array

最初のインデックスと最後のインデックスの間のすべての要素を取得するためにインデックス配列を分割する方法は?

tokens含まれる値がありますtokens=( first one two three last )。( one two three )配列にいくつの数値があるかわからない場合は、どのように値を取得できますか?firstとlast(排他)の間のすべての項目にアクセスしたいです。 echo ${tokens[*]:1:3} あげますone two three。しかし、配列の長さがわからない場合は、first前後のすべての要素をどのように取得できますかlast? Pythonで負のインデックスを使用するのと似たようなものを探しています。tokens[1:-1]...

Admin

IFSおよび読み取りまたはその他の方法を使用して長い文字列を文字列配列に分割する方法
bash-array

IFSおよび読み取りまたはその他の方法を使用して長い文字列を文字列配列に分割する方法

gitコマンドの出力である長い行がありますa=$(git submodule foreach git status)。次のようになります: a="enter'ディレクトリ1/サブディレクトリ'あなたのブランチがブランチマスターから「オリジナル/マスター」に更新されました。コミットする内容がなく、作業ツリーのクリーンアップ入力ディレクトリ2「HEADはxxxxxxから分離されており、何もコミットする必要はなく、作業ツリーがきちんと入力されました。」目次3'あなたのブランチがブランチマスターから「オリジナル/マスター」に更新されました。コミットする内容がなく、作...

Admin