-1

ここでは比較的初心者です。次のコマンドを使用してファイルを読み込んでいます。

while read line
 do 
      commands here
done < file

次のように、行をダッシュ​​で区切られた2つの部分に分割しています

dash_pos=`expr index "$line" -`

dash_posは明らかに定数ではないので、変数にしています。

次のことができるようになりました

Part1=${line:0:$dash_pos -2}
Part2=${line:$dash_pos + 1}

これらのコマンドは期待どおりに機能します。

文字列操作コマンドを変数にする方法はありますか?

Find_Part1=${line:0:$dash_pos -2}
Find_Part2=${line:$dash_pos + 1}

となることによって

  Part1=$Find_Part1  &   Part2=$Find_Part2

以前と同じように動作しますが、その後はできるようになります

 Part1=$Find_Part2   &   Part2=$Find_Part1

必要に応じて。

これを機能させるために、さまざまな組み合わせで引用符、二重引用符、括弧、中括弧、バックティックを試したので、助けていただければ幸いです。ジョン

4

2 に答える 2

0

文字通り質問にあることを実行できない理由は不明です。

# get the parts
Find_Part1=${line:0:$dash_pos -2}
Find_Part2=${line:$dash_pos + 1}

# ... as necessary:

if such and such condition ; then
   Part1=$Find_Part1
   Part2-$Find_Part2
else
   Part1=$Find_Part2
   Part2=$Find_Part1
fi

Part1また、必要に応じてとの値を交換することもできPart2、必要な一時変数は 1 つだけです。

if interesting condition ; then
    temp=$Part1; Part1=$Part2; Part2=$temp
fi

Bash 関数内では、temp名前の衝突や名前空間の混乱を避けるためにローカルを作成することがあります。

local temp
于 2013-11-12T16:13:48.410 に答える