現在、変数を読み込み、以下のように動作するスクリプトがあります。
#!bin/bash
a=10
b=15
c=20
d=a*b+c
echo $d
しかし、以下を含む入力ファイルに分割したいと思います。
a=10
b=15
c=20
そしてタスクを実行するスクリプト
#!/bin/bash
d=a*b+c
echo $d
そしてこう呼ばれます。
./script.sh < input.in
もう少し掘り下げて、簡単なものを作ってみました。
./script.sh < input.in
これは答え170を返します。
しかし、これはうまくいきません。もう少し探してみると、スクリプトに「source」というコマンドが必要なようですが、この場合にはどうすればいいかわかりません。
できますか?これを行う最良の方法は何ですか?
ベストアンサー1
からhelp source
:
source: source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
したがって、スクリプトに次の行を追加するだけです。
source input.in
またはこれ(POSIXバージョン):
. input.in
実行時に入力ファイルを渡すには、次のものを使用できます。位置パラメータ:
source "$1"
. "$1"
また、d=a*b+c
「整数」属性がないと機能しません。d
declare -i d
d=a*b+c
またはあなたが使う算術拡張タスクの実行:
d=$((a*b+c))
例:
#!/bin/bash
source "$1"
d=$((a*b+c))
echo "$d"
$ ./script.sh input.in
170