Ubuntu 16.04 LTS Desktop 壁紙

シェルスクリプトを書いていて”cannot create ~/dir/file Directory nonexistent”というエラーがでました。原因は単純でしたがメモしておきます。

 
!<--more-->
 

環境

Ubuntu 16.04 LTS

スクリプト例

第一引数に与えたディレクトリ下のファイルリストを取得してDropboxに保存するスクリプトファイル。

#! /bin/sh

dir="~/Dropbox/log/files/"
name="${2}_$(date "+%Y%m%d_%H%M%S").log"
echo "Creating ${name} file."

 if [ "$#" -eq 2 ]
 then
   tree -Dsh ${1} >${dir}${name}
   echo "It was saved in  ${dir}${name}"
 else
   echo "usage: $0 dir name"
 fi

実行結果とエラー

実行結果は下の通り。

$ sh foo.sh /mnt/da/ test
Creating test_20180203_014232.log file.
foo.sh: 20: foo.sh: cannot create ~/Dropbox/log/files/test_20180203_014232.log: Directory nonexistent
It was saved in  ~/Dropbox/log/files/test_20180203_014232.log

実行結果の2行目に”foo.sh: 20: foo.sh: cannot create ~/Dropbox/log/files/test_20180203_014232.log: Directory nonexistent
“というエラーメッセージが表示されていてファイルの保存ができていません。

原因

原因は保存するディレクトリをホームディレクトリを意味する~(チルダ)を使って指定していたのがまずかったようです。

普段コマンドを打つときは~を使っているので気づきませんでしたが、シェルスクリプトでは控えたほうが良さそうです。

 

【シェルスクリプト】cannot create ~/dir/fileの解決
Tagged on:

コメントを残す