次のコードは、正確な場所にファイルを作成するために使用されます。ただし、test.shabcを実行した結果は次のとおりです。
タッチ:ファイルオペランドがありません
#! /bin/sh
#test.sh
location='~/configuration/'$1
echo $location
touch `$location`
何か問題がありますか?ありがとうございます!
バックティックを挿入することで、の値を実行し、それを引数として使用$location
しようとしています(ここのセクション3.4.5を参照)。$location
touch
touch $location
値を指定して実行する#!/bin/sh
と、シェルスクリプトで-x
何が行われているのかがより明確にわかります。bash
これは、スクリプトをデバッグするための非常に便利な手段です。
~
引用符で囲むと、特別な意味が失われます。必要なもの:
#! /bin/sh
#test.sh
location=~/configuration/"$1"
echo "$location"
touch "$location"
変数を常に二重引用符で囲む習慣を身に付ける必要があります(引用符が不要な特定の時間を学習するまで)。
場所はフォルダまたはファイルですか?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
これを行うにはいくつかの方法がありますが、最初の修正はに変更することです
touch `echo $location`
ただし、もっと簡単かもしれないと思います
touch ~/configuration/$1