我正在尝试制作一个 shell 脚本,使为 qemu-launcher(我尝试过的 4 个 qemu GUI 中唯一对我有用的)制作配置文件成为一个一步过程,但无法弄清楚如何将命令行参数传递给“touch”命令。
我的控制台输入是config hello.iso
。
到目前为止我的脚本是:
#!/bin/sh
touch $1
这不会创建文件。我尝试创建一个等于 $1
的变量,然后使用它,但我仍然没有得到任何响应。我已经在双引号和单引号中尝试了 $1
;使用 double 我什么也得不到,而使用 single 生成的文件名是 1
。
但是,如果我仅传递 hello
参数,则会创建具有该名称的文件,但我需要扩展名才能与其他内容一起使用。
难道不能这样做吗?还是我只是不明白?
我真正想做的是获取参数并从中删除 .iso
,然后使用它作为文件名,但我很确定我可以使用 grep 正向前瞻来做到这一点。
最佳答案
如果您使用 bash 而不是 sh:
#! /bin/bash
myVar=$1
touch ${myVar%.iso}
会完成这项工作。 '%' 后面的字符串将从变量内容的末尾剥离。 要获取有关当前脚本版本的更多信息,请尝试以下操作:
- 重命名您的脚本 - 不要使用“config”
- 通过“echo ”更改“触摸”
- 将脚本的输出重定向到文件
查看输出内容
od -a myOutputOfTheScript
或者... 调用你的脚本
bash -x myScript hello.iso > ouput.txt
关于linux - 无法从包含句点的参数中获取 "touch"文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772214/