Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用$NAUTILUS\u脚本\u选定的\u文件\u路径_Bash_Nautilus - Fatal编程技术网

Bash 如何使用$NAUTILUS\u脚本\u选定的\u文件\u路径

Bash 如何使用$NAUTILUS\u脚本\u选定的\u文件\u路径,bash,nautilus,Bash,Nautilus,我编写了一个bash脚本,它如下所示: #!/bin/bash D=`zenity --entry --entry-text='Folder'` pattern1=`zenity --entry --entry-text='replace'` pattern2=`zenity --entry --entry-text='by'` cd "$D" rename "s/$pattern1/$pattern2/g" * zenity --info --text="Done" 它工作得很好。 我将其添

我编写了一个bash脚本,它如下所示:

#!/bin/bash
D=`zenity --entry --entry-text='Folder'`
pattern1=`zenity --entry --entry-text='replace'`
pattern2=`zenity --entry --entry-text='by'`
cd "$D"
rename "s/$pattern1/$pattern2/g" *
zenity --info --text="Done"
它工作得很好。
我将其添加到nautilus scrips文件夹(~/.gnome2/nautilus脚本),
我做了一些改变:

#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
    exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
    exit
fi
rename "s/$pattern1/$pattern2/g" \'$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS\'
zenity --info --text="Done"
但它不起作用。
我希望我能找到一些帮助

提前感谢。

问题通过两种方式解决。 第一个:

使用for循环:

#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
    exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
   exit
fi
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
   do
     rename "s/$motif1/$motif2/g" "$file"
done
zenity --info --text="Done"
第二点: 使用while循环:

#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
    exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
   exit
fi
echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | while read 'file'
do
  rename "s/$motif1/$motif2/g" "$file"
done
zenity --info --text="Done"
现在的问题是我为什么要这么做
答案是因为$NAUTILUS\u SCRIPT\u SELECTED\u FILE\u path是一个序列
即使选择了一个文件,我们也会在$NAUTILUS_SCRIPT_selected_file_PATHS中找到文件所选路径和分隔符
您可以通过使用以下命令看到:(将其添加到脚本)

我希望这对某人有用

问题通过两种方式解决。 第一个:

使用for循环:

#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
    exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
   exit
fi
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
   do
     rename "s/$motif1/$motif2/g" "$file"
done
zenity --info --text="Done"
第二点: 使用while循环:

#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
    exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
   exit
fi
echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | while read 'file'
do
  rename "s/$motif1/$motif2/g" "$file"
done
zenity --info --text="Done"
现在的问题是我为什么要这么做
答案是因为$NAUTILUS\u SCRIPT\u SELECTED\u FILE\u path是一个序列
即使选择了一个文件,我们也会在$NAUTILUS_SCRIPT_selected_file_PATHS中找到文件所选路径和分隔符
您可以通过使用以下命令看到:(将其添加到脚本)

我希望这对某人有用

问题在标题中:我如何使用$NAUTILUS\u SCRIPT\u SELECTED\u FILE\u路径?我试过了,就像你在脚本中看到的那样,但它不起作用对不起,你不喜欢这句话问题在标题中:我如何使用$NAUTILUS\u SCRIPT\u SELECTED\u FILE\u路径?我试过了,就像你在脚本中看到的那样,但它不起作用对不起,你不喜欢这个句子