Bashで変数を一時的に宣言します。

Bashで変数を一時的に宣言します。

たとえば、Bashスクリプトファイル(Bash関数ではない)でBashで変数を宣言するには、次の手順を実行し、スクリプトx=yファイルで変数を使用したら、次の手順を実行しますunset x

5分後に変数を1行に設定解除する方法(関数を使用せず)はありますか? 1つの可能なアプローチは次のとおりですx=y && echo "unset x" | at now + 5 minutes

この特別なケースでは、端末から直接スクリプトファイルを実行しました。コピーして貼り付けるそのコンテンツはGitHubからターミナルに流れます。これは次のものです購入私は仮定する」。


GitHubを使用していることを考えると、別のオプションは次のとおりです。オリジナル次のように別のシェルを使用してGitHubから直接スクリプトファイルを作成しますbashが、この方法は不可論的ではないため、気に入りませんuser/repo/branch/path/file

wget -O - https://raw.githubusercontent.com/<username>/<repo>/<branch>/<path>/<file> | bash

ベストアンサー1

atジョブは他のコンテキストで実行され、現在のシェルには影響しないため使用できません。

しかし、私たちも同様のことができます。このコードは、私たちが捕捉してアクションを取ることができる警告信号をトリガーします。

#!/bin/bash

x=100

trap 'unset x' SIGALRM

mypid=$$

( /bin/sleep 3 ; kill -ALRM $mypid) &

for a in 1 2 3 4 5 6
do
  echo Now x=$x
  sleep 1
done

この例は、必要に応じて遅延を選択できる3秒しか使用しないソリューションを示しています。

実行中:

Now x=100
Now x=100
Now x=100
Now x=
Now x=
Now x=

1行で簡単に作成できます;...

おすすめ記事