and*_*ewz 0 shell bash variable assignment
我有以下脚本,我尝试创建一个空文本文件。我试过touch
,我试过echo -n >
——他们都失败了。
#!/bin/bash
set filename_result="contents"
echo "filename=$filename_result" # Shows: filename=
rm -f "$filename_result".json
touch $filename_result # Error: usage: touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...
# Note that `% touch myfile` works fine on the command line
touch -- "$filename_result" # Error: touch: : No such file or directory
echo -n > "$filename_result" # Error: No such file or directory
echo "[" >> "$filename_result"
for file in *json
do
echo "examining file: $file"
echo "\n" >> "$filename_result"
cat $file >> "$filename_result"
echo "\n" >> "$filename_result"
done
echo "\n]" >> "$filename_result"
mv $filename_result "$filename_result".json
Run Code Online (Sandbox Code Playgroud)
编辑:打印到屏幕filename_result
变量显示它在设置后为空?
echo "filename=$filename_result" # Shows: filename=
Run Code Online (Sandbox Code Playgroud)
Kam*_*ski 15
set filename_result="contents"
不为 赋值filename_result
。它分配给第一个位置参数,值本身是filename_result=contents
。例子:
$ set filename_result="contents"
$ echo "$1"
filename_result=contents
Run Code Online (Sandbox Code Playgroud)
该变量filename_result
不存在,$filename_result
扩展为空,"$filename_result"
等效于""
.
而不是set filename_result="contents"
你想要的只是
filename_result="contents"
Run Code Online (Sandbox Code Playgroud)
尝试这个:
filename_result=contents
touch -- "$filename_result"
Run Code Online (Sandbox Code Playgroud)
或者:
set contents
touch -- "$1"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1948 次 |
最近记录: |