私は持っています
dir_1=/foo
dir_2=/foo/bar
file_unique=/foo/bar/tmp/
2つのディレクトリを比較しdir_1
ますdir_2
。次のdir_1
パターンに一致するファイルを見つけたいです。dir_2
*.PATTERN
PATTERNはすべての単語のプレースホルダーです。dir_1
サンプルファイルは、lockinfo.1234.mikey
またはlockinfo.1235.mikey
。
dir_2 file
例は次1234.mickey.AB
のとおりです。1235.mikey.AB
スキーマが存在するdir_1
が存在しない場合は、dir_2
ファイル全体をディレクトリにコピーします。file_unique
#!/bin/bash
# setup folders for our different stages
dir_1=/dev/shm
dir_2=/var/spool/jobs
file_unique=/dev/shm/tmp
mkdir /dev/shm/tmp
for file in "${dir_1}"/.lockinfo.*.mickey; do
[[ ! -f "$file"]] && break
basename=$(basename ${file})
[[ ! -f ${dir_2}/${basename} ]] && cp -p $file $file_unique
done
上記のエラーは次のとおりです。
gpu_lock_healthcheck.ver1: line 13: unexpected token `newline', conditional binary operator expected
gpu_lock_healthcheck.ver1: line 13: syntax error near `break'
gpu_lock_healthcheck.ver1: line 13: ` [[ ! -f "$file"]] && break '
答え1
13行目にタイプミスがあります。シェルが条件付きテスト構成の終わりとして認識されるようにするには、ターミネーターの前]]
(後)にスペースが必要です。"$file"
以下を使用してシェルスクリプトを確認することをお勧めします。shellcheck
これらのエラーを検出するツール(多くのLinuxディストリビューションでスタンドアロンとしても利用可能)