如何使用shellscript

时间:2019-02-18 10:14:18

标签: linux shell dynamic scripting

让我们考虑一个例子,

scriptPath = / home / sharath / Downloads / Atollic_TrueSTUDIO_for_STM32_9.2.0_installer

在上面的代码行中,如果用户是“ sharath”,那么如果用户不同,则他可以相同的方式访问文件/文件夹。如何动态访问该文件夹/文件。

下面是我的shellscript(.sh文件):

#!/bin/bash
set -eu
configLocation=/etc/atollic
scriptPath=/home/sharath/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer
family=STM32
arch=x86_64
version=9.2.0
configFile=${configLocation}/TrueSTUDIO_for_${family}_${arch}_${version}.properties
installPath=/opt/Atollic_TrueSTUDIO_for_${family}_${arch}_${version}/ 
mkdir -p /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/
tar xzf ${scriptPath}/install.data -C /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/

在脚本的最后一行,$ {scriptPath}对于不同的用户是不同的,如何在shell脚本中进行处理。

更新1:

如果我使用$ {USER}或$ {HOME}或whoami返回“ root”, 这是我的日志:

tar (child): /root/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer/install.data: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now 

更新2:

当前用户为“ root”

4 个答案:

答案 0 :(得分:2)

使用$ HOME作为scriptPath的开始,即:

scriptPath=${HOME}/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer

答案 1 :(得分:0)

我尝试了几种方法,最后发现以下解决方案- 将以下脚本用于

users
myuser=$(users)

echo "The user is " $myuser

此处 users 返回当前用户名。

您的脚本成为:

#!/bin/bash
users
myuser=$(users)
set -eu
configLocation=/etc/atollic
scriptPath=/home/$myuser/Downloads/Atollic_TrueSTUDIO_for_STM32_9.2.0_installer
family=STM32
arch=x86_64
version=9.2.0
configFile=${configLocation}/TrueSTUDIO_for_${family}_${arch}_${version}.properties
installPath=/opt/Atollic_TrueSTUDIO_for_${family}_${arch}_${version}/ 
mkdir -p /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/
tar xzf ${scriptPath}/install.data -C /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.2.0/

感谢您回答我的问题。

答案 2 :(得分:-1)

您正在使用什么Linux操作系统?

您可以按以下方式简单使用

scriptPath =〜/ Downloads / Atollic_TrueSTUDIO_for_STM32_9.2.0_installer

其中〜表示用户的主目录。即/ home / sarath

另一种方法是按如下方式使用它,

scriptPath =“ / home / whoami / Downloads / Atollic_TrueSTUDIO_for_STM32_9.2.0_installer”

答案 3 :(得分:-1)

Dynamic_Path =“ / home / $(whoami)/ $ SCRIPT_PATH”