bash - 如何在(bash)shell脚本上将命令的单引号视为普通引号?(dcm2niix的问题)
问题描述
我正在编写一个使用 Dcm2niix 的 bash 脚本。Dcm2niix 的命令包含单引号。我尝试以多种方式在脚本上添加单引号,但它不起作用。
我的工作系统(环境?)是:Ubuntu 18.04.1 LTS。Dcm2niix 是一个 DICOM 到 NifTI 的转换器。它将文件转换.dcm
为.nii
文件。它的命令通常是这样的:
dcm2niix [options] <sourcedir>
<sourcedir>
就像:(
'sourcedir'
没有单引号是行不通的)
在终端上,我输入
dcm2niix -m y -f %d 'file_path'
使用将 .dcm 文件转换为 file_path 目录中的 .nii 文件。我想创建一个脚本来自动转换不同目录中的一些 .dcm 文件。因此,我写了类似的东西:
file_path=Desktop/test/
dcm2niix -m y -f %d '$file_path'
在这里,我尝试将文件路径视为变量。但它不起作用。最后一行代码出错。还,
dcm2niix -m y -f %d "'$file_path'"
和
dcm2niix -m y -f %d '"$file_path"'
和
dcm2niix -m y -f %d `'$file_path'`
也不行。
我从之前显示的代码中得到的错误:
输出文件夹无效:桌面/测试
输出文件夹无效:“桌面/测试”
输出文件夹无效:“桌面/测试”
输出文件夹无效:$file_path
解决方案
只有在终端中有空格或球体等特殊字符时,您才需要''
在终端中的 file_path 周围。情况并非如此Desktop/test/
。$file_path
但是在你的脚本中,你有一个要扩展的变量Desktop/test/
,所以要''
防止这种情况。尝试使用双引号"
而不是'
. \'
或者尝试使用而不是转义单引号的特殊含义'
。
dcm2niix -m y -f %d "$file_path"
或者
dcm2niix -m y -f %d \'"$file_path"\'
但我怀疑这<sourcedir>
真的需要单引号。
推荐阅读
- python - 尝试向 Azure REST API 发送 http 请求时出现 Python InvalidHeader 错误
- javascript - 如何让我的按钮在 onclick 事件后停止消失
- php - 如何在PHP中将一串html从一个页面回显到另一个页面
- jmeter - 有没有办法根据条件在Jmeter中传递下一个请求中的值是真的
- docker - Docker:错误:找不到证书 cert.pem?
- c - 用于 EEPROM 写入的 stm8flash .bin 文件
- r - 如何合并 r 中两个数据集的两列并包括一个数据框中的所有元素,除非它们是 NA?
- docker - 无法从本地机器访问在 docker 容器内运行的 Web 应用程序
- javascript - 如何使用 Jquery 在不同的变量上存储多个选择选项
- python - 使用子进程模块python打开带有默认应用程序的文件(混淆)