让我们考虑一个例子,
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”
答案 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”