我有一个脚本,我需要启动一个命令,然后将一些额外的命令作为命令传递给该命令.我试过了
su
echo I should be root now:
who am I
exit
echo done.
Run Code Online (Sandbox Code Playgroud)
...但它不起作用:su成功,但命令提示符只是盯着我.如果键入exit的提示,echo和who am i等开始执行!而且echo done.根本没有执行.
同样,我需要这个工作ssh:
ssh remotehost
# this should run under my account on remotehost
su
## this should run as root on remotehost
whoami
exit
## back
exit
# back
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我正在寻找能够以一般方式解决这个问题的答案,这些答案并非特定于
su或ssh特别是.目的是使这个问题成为这种特定模式的规范.
我正在编写一个脚本来处理20个文件.它们都位于不同的目录中.我有部分文件名.
File1
目录是/data/data1directory/Sample_File1/logs/File1_Data_time.err File2 目录是/data/data2directory/Sample_File2/logs/File2_Data_time.err
.....
我的脚本看起来像这样.(runrunrun.sh)
#!/bin/bash
INPUT=$1
mv /data/*/Sample_*/logs/*_Data_time.err /data/*/Sample_*/logs/*_Data_time_orig.err
cp /data/*/Sample_*/scripts/*.sh /data/*/Sample_*/scripts/*_orig.sh
sh /data/*/Sample_*/scripts/*_orig.sh
Run Code Online (Sandbox Code Playgroud)
在运行时,我试过了.
./runrunrun.sh File1
.runrunrun.sh File1
sh runrunrun.sh File1
mv:无法移动/data/data1directory/Sample_File1/logs/File1_Data_time.err /data/*/Sample_*/logs/*_Data_time_orig.err:没有这样的文件或目录cp也得到类似的反馈
我做得对吗?
谢谢!