我遇到的问题是,当我输入命令时,
su - root
Run Code Online (Sandbox Code Playgroud)
在我的shell脚本文件的开头,它会提示用户输入密码,然后做不与外壳脚本的其余部分继续。然后我必须通过终端手动定位和运行 shell 脚本。我希望脚本确保用户以 root 身份登录,然后继续执行 shell 脚本的其余部分。
换句话说,我想以任何用户身份运行脚本,但是一旦脚本开始执行,用户必须更改为 root,然后以 root 身份继续执行脚本的其余部分,直到完成。这能做到吗?
我试图将一个变量从我的本地服务器 (location1) 传递到远程服务器 (location2)。该代码的目的是从远程服务器的预定义位置复制文件。简单来说,我想使用预定义的路径将文件从 location2 复制到 location1,其中 location1 在本地服务器上,location2 是远程服务器。看代码段:
$location1=somewhere/on/local_server
$location2=somewhere/on/remote_server
sshpass -p "password" \
ssh username@74.11.11.11 'su -lc "cp -r $location2 $location1";'
Run Code Online (Sandbox Code Playgroud)
我得到的错误是 $location1 和 $location2 都未定义。此外,我不想手动输入位置路径,因为它们可以随时更改,如果手动完成,在代码中更改它们会很痛苦。
我正在尝试使用awkbash 脚本中的语句从(例如 1 或 4 和 2 或 3)文本文件中查找某些特定值。如果在文件中(在awk语句内)找到该值,那么我想从awk语句外部调用一个函数并将找到的值作为参数传递给它。
我的问题:(1)这可能吗?如果是,那么如何?(2)如果不可能或者有更好的方法,那怎么办?
请注意,我在搜索文件时跳过了文本文件的前两行。我正在使用 GNU AWK。如果需要进一步解释,请告诉我。
**我提前为交叉帖子道歉,但我没有得到我正在寻找的答案。
文件.txt
Name Col1 Col2 Col3
-----------------------
row1 1 4 7
row2 2 5 8
row3 3 6 9
Run Code Online (Sandbox Code Playgroud)
实际retrieve功能比这个简化的例子复杂得多。所以我需要调用这个函数,因为我不想把它放在awk语句中。
function retrieve {
if [[ "$1" == "1" ]]; then
echo "one beer on the wall"
elif [[ "$1" == "4" ]]; then
echo "four beers on the wall"
fi
}
function retrieve2 {
if [[ "$1" …Run Code Online (Sandbox Code Playgroud) 我正在尝试比较两台服务器之间的命令输出。我想从诸如ls -l. 有没有办法这样做?到目前为止,我还没有发现任何东西。
我将输出crontab -l存储在没有扩展名的文件 (crontab_file) 中。但是每当我尝试cat它时,我都会收到错误消息,说找不到文件的多行的命令。这是我到目前为止的代码:
file/commands/crontab_file > $PWD/tmp
cat $PWD/tmp
Run Code Online (Sandbox Code Playgroud)
我一直收到错误,我不知道为什么。有什么建议?