linux shell脚本换行问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell脚本换行问题相关的知识,希望对你有一定的参考价值。

在shell中执行java -jar命令时带了很多参数,中间有换行,用的是 \ 来换行,然后在另外一个java程序中调用该shell脚本,但是在运行的时候报java: command not found错误,好奇怪,求解答

\\不是换行,而是续行,就是说一行写不下了,下一行继续,而不是一个命令的结束


你说报java: command not found,跟\\没有关系,错误的原因:

    你没有装java

    path没有设对,echo $PATH看一下java的执行文件在不在其中的一个目录,没有,加之


追问

对的对的,是这个意思,表述错误,但是我的服务器上java肯定是装了的,path也是对的,之前是把项目部署在服务器上可以,在本地远程连linux去执行shell脚本会报这个错,但是昨天2种方式都报这个错了

追答

你如果确定环境变量没有问题,那就无解了

echo $JAVA_HOME
echo $PATH
到底返回什么?

追问

但是我单独直接去执行这个shell可以成功运行啊sh start.sh这样是可以的

追答

你怎么执行这个script的?

还有,你的PATH, 有jdk1.6.0_21, 也有jdk1.6.0_23,已经混乱了

追问

我用java调用shell执行的啊,Runtime.getRuntime().exec("sh start.sh");我只装了1.6.0_21,而且我的/home/sandibs/下根本就没有Java这个路径,也不知道哪来的

追答

java调用,那你就应该在script里面看环境变量啊,把这两行加在script中调用java之前,
echo $JAVA_HOME
echo $PATH
就当调试,看看输出是什么?

参考技术A 你这些带 \ 的命令是直接就这样写在了shell脚本那个文件里么?

如果是的话,改过来,将这一条命令完整的写在一行里,中间不要按回车,一直写,一直写,你看它到头了自己会到下一行(其实还是在同一行,只是因为桌面显示不下了而显示在下一行)。追问

试过了,也不行,就是感觉特别奇怪

参考技术B java的环境变量配置了么!!!?追问

必须配置了啊

shell脚本学习1(Linux脚本攻略)

sudo <command> < arguments> 等价于root权限执行命令

赋予所有用户文件的可执行权限:chmod a+x script.sh

执行脚本:
./script.sh#./表示当前的目录

命令1:echo "welcome to Bash"

命令2:printf "hello world"

区别:printf 不带换行!

example1:

#!/bin/bash

printf "%-5s %-10s %-4s\n" No Name Mark

 

命令3:查看进程运行时的环境变量:

cat /proc/$PID/environ(PID是进程的ID)

命令4:获取进程的ID

pgrep gedit

12501(gedit的进程的ID)

可以通过以下的命令查看进程的环境变量:

cat /proc/12501/environ/GDM_KEYBOARD_LAYOUT=usGNOME_KEYPING=1560USER=slynuxHOME=/home/slynux

改命令返回一个包含环境变量以及对应变量值的列表

命令5:tr ‘\0‘ ‘\n‘ 替换命令

注意:

var=value是赋值操作,var  = value是相等操作,易出错;

例子:

var="value"

echo $var(输出内容,使用$符号)

后者echo ${var}

 

环境变量是未在当前进程中定义,而从父进程中继承而来的变量;

在PATH中添加新的路径:

export PATH="$PATH:/home/user/bin"

也可以使用:
PATH="$PATH:/home/user/bin"

export PATH

 





以上是关于linux shell脚本换行问题的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本执行错误 $' ':command not found

Shell脚本处理文本换行问题

Windows 和 Linux 中的换行与回车的区别,Windows下编写的Shell脚本,直接放到linux/unix下执行会报错

关于windows下编写的shell脚本在linux下无法运行报错问题

在shell脚本里如何表示回车

shell脚本编写中同样命令直接执行正确,脚本执行报错