1

次のコードは、正確な場所にファイルを作成するために使用されます。ただし、test.shabcを実行した結果は次のとおりです。

タッチ:ファイルオペランドがありません

#! /bin/sh
#test.sh
location='~/configuration/'$1
echo $location
touch `$location`

何か問題がありますか?ありがとうございます!

4

4 に答える 4

3

バックティックを挿入することで、の値を実行し、それを引数として使用$locationしようとしています(ここのセクション3.4.5を参照)。$locationtouch

touch $location

値を指定して実行する#!/bin/shと、シェルスクリプトで-x何が行われているのかがより明確にわかります。bashこれは、スクリプトをデバッグするための非常に便利な手段です。

于 2012-10-08T14:01:15.540 に答える
2

~引用符で囲むと、特別な意味が失われます。必要なもの:

#! /bin/sh
#test.sh
location=~/configuration/"$1"
echo "$location"
touch "$location"

変数を常に二重引用符で囲む習慣を身に付ける必要があります(引用符が不要な特定の時間を学習するまで)。

于 2012-10-08T15:00:39.113 に答える
2

場所はフォルダまたはファイルですか?if file -f if folder -d in following script --- bashは理解する必要があります〜

#! /bin/bash
#test.sh
var1=$1;
location=~/configuration/$var1
echo $location

if [ ! -f $location ]; then
 echo "not found touching $location"
 touch `$location`
fi
于 2012-10-08T16:47:33.410 に答える
0

これを行うにはいくつかの方法がありますが、最初の修正はに変更することです

touch `echo $location`

ただし、もっと簡単かもしれないと思います

touch ~/configuration/$1
于 2012-10-08T14:01:44.850 に答える