2番目:スクリプトが最初に実行されると、スクリプトはユーザーに変数の入力を求めます。

2番目:スクリプトが最初に実行されると、スクリプトはユーザーに変数の入力を求めます。

bashがreadとsedを組み合わせてスクリプトに変数を挿入するようにしてください。 sedになる必要はありませんが、そうです。

このように:

INTERNAL="`read -p "PATH " path` | sed -i '3i\$INTERNAL="/run/media/blah" blah.sh

Pythonを実装することもできます。私のプロジェクトはシェルで書かれていますが、setup.py最初の実行にはスクリプトを使用できます。

最初の実行中に変数を設定し、後で使用するために保存するスマートスクリプトを作成しようとしています。この場合、$ HOMEのバックアップに使用される外部/内部デバイスのパスです。スクリプトがファイルを検索するようにします。 ($HOME/.already_ran.txtスクリプトが以前に実行されたことを確認するために検索する隠しダミーファイル)ファイルが見つからない場合、ユーザーに変数(この場合はパス)の入力を求められます。私は彼らが手動でスクリプトを開き、変数を追加したくありません。

ベストアンサー1

#!/bin/bash

conffile=$HOME/.myscript.env

if [[ -f $conffile ]]; then
    if ! source "$conffile"; then
        printf 'Error parsing configuration file "%s"\n' "$conffile"
        exit 1
    fi
else
    read -p 'Please enter device path: ' devpath

    # further steps to verify correctness of $devpath here
    # then...

    declare -p devpath >"$conffile"
fi

# the rest of the script using "$devpath" goes here

declare -p varnamebash変数varnameとその現在の値を定義するステートメントが出力されます。これをファイルに書き込むと、変数の再作成に使用できるファイルが提供されます。

devpath一部のパス名を含む単純なシェル変数の場合は、次のように/some/path作成します。$conffile

declare -- devpath="/some/path"

ifコマンドを囲む - ドアはsource誰かが改ざんされた場合を保証します。通事論シェルがファイルを読み取れず、スクリプトが終了するようにファイルを保存します。

declare -p後で再構成するために、環境変数、配列変数などをファイルに保存するためにも使用できます。

おすすめ記事