首页 > 解决方案 > 如何在(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

标签: bashshell

解决方案


只有在终端中有空格或球体等特殊字符时,您才需要''在终端中的 file_path 周围。情况并非如此Desktop/test/$file_path但是在你的脚本中,你有一个要扩展的变量Desktop/test/,所以要''防止这种情况。尝试使用双引号"而不是'. \'或者尝试使用而不是转义单引号的特殊含义'

    dcm2niix -m y -f %d "$file_path" 

或者

    dcm2niix -m y -f %d \'"$file_path"\' 

但我怀疑这<sourcedir>真的需要单引号。


推荐阅读