我有一个简单的脚本(timeconvert.sh),它将秒转换为hh:mm:ss格式并将其写入文件 timeremain.out :
#!/bin/bash
#convert sec to h:m:s
secs=${1:?}
h=$(( secs / 3600 ))
m=$(( ( secs / 60 ) % 60 ))
s=$(( secs % 60 ))
printf "%02d:%02d:%02d\n" $h $m $s > timeremain.out
我试图让它读取文件 secremain.out 作为脚本的输入,但没有以下工作:
cat secremain.out | ./timeconvert.sh
./timeconvert.sh < secremain.out
有人可以建议使用正确的语法或编辑脚本来直接读取文件吗?
答案 0 :(得分:2)
您的脚本会从$1
读取秒数,因此您可以在命令行中传入它们:
secs=$(cat secremain.out)
./timeconvert.sh $secs
# or
./timeconvert.sh $(cat secremain.out)
或者您可以将脚本更改为从stdin中读取:
#!/bin/bash
#convert sec to h:m:s
read secs
如果您执行后者,那么它可以按您编写的方式从文件中读取:
cat secremain.out | ./timeconvert.sh
./timeconvert.sh < secremain.out
答案 1 :(得分:0)
STDIN
或参数,脚本自己检测上下文:
#!/bin/bash
#convert sec to h:m:s
if [[ -t 0 ]]; then
secs=${1:?}
else
read secs
fi
h=$(( secs / 3600 ))
m=$(( ( secs / 60 ) % 60 ))
s=$(( secs % 60 ))
printf "%02d:%02d:%02d\n" $h $m $s
./script.sh 120
或
echo 120 | ./script.sh