これは効果があります
#!/bin/bash
dir="/home/masi/Documents/CSV/Case/"
targetDir="/tmp/"
id=118
channel=1
filenameTarget=$targetDir"P"$id"C"$channel".csv"
cat $dir"P"$id"C"$channel"T"*".csv" > $filenameTarget
デバッグ中に成功した出力bash -x ...
+ dir=/home/masi/Documents/CSV/Case/
+ targetDir=/tmp/
+ id=118
+ channel=1
+ filenameTarget=/tmp/P118C1.csv
+ cat /home/masi/Documents/CSV/Case/P118C1T1000-1010.csv /home/masi/Documents/CSV/Case/P118C1T1010-1020.csv
for-forループの同じ式が機能しない
#!/bin/bash
dir="/home/masi/Documents/CSV/Case/"
targetDir="/tmp/"
ids=(118 119)
channels=(1 2)
# http://unix.stackexchange.com/a/319682/16920
for id in ids;
do
for channel in channels;
do
# example filename P209C1T720-T730.csv
lastFile=$dir'P'$id'C'$channel'T1790-T1800.csv'
# show error if no last file exists
if [[ -f $lastFile ]]; then
echo "Last file "$lastFile" is missing"
exit 1
fi
filenameTarget=$targetDir"P"$id"C"$channel".csv"
cat $dir"P"$id"C"$channel"T"*".csv" > $filenameTarget
done;
done
デバッガ出力の使用bash -x ...
+ dir=/home/masi/Documents/CSV/Case/
+ targetDir=/tmp/
+ ids=(118 119)
+ channels=(1 2)
+ for id in ids
+ for channel in channels
+ lastFile=/home/masi/Documents/CSV/Case/PidsCchannelsT1790-T1800.csv
+ [[ -f /home/masi/Documents/CSV/Case/PidsCchannelsT1790-T1800.csv ]]
+ filenameTarget=/tmp/PidsCchannels.csv
+ cat '/home/masi/Documents/CSV/Case/PidsCchannelsT*.csv'
cat: /home/masi/Documents/CSV/Case/PidsCchannelsT*.csv: No such file or directory
コード2
if句は、存在しないファイルに対しても常に肯定的です。これは間違っています。
#!/bin/bash
dir="/home/masi/Documents/CSV/Case/"
startTimes=( $(seq 300 10 1800) )
id=119
channel=1
# example filename P209C1T720-730.csv
firstFile="${dir}P${id}C${channel}T300-T310.csv"
# show error if no first file exists
if [[ ! -f "${firstFile}" ]]; then
echo "First file "${firstFile}" is missing"
exit 1
fi
cat ${firstFile}
出力
cat: /home/masi/Documents/CSV/Case/P119C1T300-310.csv: No such file or directory
+ for channel in '"${channels[@]}"'
+ for startTime in '"${startTimes[@]}"'
+ endTime=310
+ filenameTarget=/tmp/P119C2.csv
+ cat /home/masi/Documents/CSV/Case/P119C2T300-310.csv
オペレーティングシステム:Debian 8.5
Linuxカーネル:4.6
答え1
[[ -f $lastFile ]]
はい本物ファイルが存在する場合。だから、あなたが到着してからcat $dir"P"$id"C"$channel"T"*".csv"
この道は果たしていいえ存在する。あなたが望むかもしれませんif ! [[ -f $lastFile ]]
。
返品、より多くの引用を使用™正しく - 引用する必要があります変わりやすい。静的文字列を引用するのは良い保護策ですが、必ずしも必要ではありません。 「最後の」行を作成するための一般的な推奨事項はですcat "${dir}P${id}C${channel}T"*'.csv' > "$filenameTarget"
。