Use arguments in shell script with apt
from SpongeB0B@programming.dev to linux@lemmy.ml on 16 Jan 13:55
https://programming.dev/post/24137442

Hi,

I would like to pass the arguments to apt trough a .sh script.

apt install "${1}/opensnitch_${1}_amd64.deb" "${1}/python3-opensnitch-ui_${1}_all.deb"

so for example if I launch test.sh 1.6.5 the script should run apt install 1.6.5/opensnitch_1.6.5_amd64.deb 1.6.5/python3-opensnitch-ui_1.6.5_all.deb

but it’s not wokring it pass to apt only 1.6.5 and not the rest of the string… any ideas ?

#linux

threaded - newest

atzanteol@sh.itjust.works on 16 Jan 14:18 next collapse

For apt to install a local file I think you need either a fully qualified path or to use “./” at the start for a relative path.

So “./$1/opensnitch_${1}_amd64.deb”

apt install 1.6.5/opensnitch_1.6.5_amd64.deb 1.6.5/python3-opensnitch-ui_1.6.5_all.deb

Edit: Here’s a better example of what I think you would want:

#!/bin/bash
# Often good to assign a numbered parameter to a variable
VER="${1}"
apt install "./${VER}/opensnitch_${VER}_amd64.deb" "./${VER}/python3-opensnitch-ui_${VER}_all.deb"

Also - when debugging bash scripts it’s often helpful to just put “echo” before the line you’re questioning to see what exactly is being run. e.g.:

#!/bin/bash
VER="${1}"
echo apt install "./${VER}/opensnitch_${VER}_amd64.deb" "./${VER}/python3-opensnitch-ui_${VER}_all.deb"

That will show the the command that would have run rather than running it, then you can inspect it for errors and even copy/paste it to run it by hand.

[deleted] on 16 Jan 15:04 next collapse

.

Botzo@lemmy.world on 16 Jan 16:09 next collapse

I’d like to suggest that you take a different approach, though it looks like there is a workable suggestion already.

Consider using apt_preferences to pin your versions instead of scripting.

wiki.debian.org/AptConfiguration#apt_preferences_…

Here’s a clip from one of my distrobox builds:

Package: python3.10
Pin: version 3.10.*
Pin-Priority: 999
IrritableOcelot@beehaw.org on 16 Jan 16:26 collapse

Is this installing a local .deb file or installing from a repo? If installing from a repo, the .deb and the full file path are unnecessary. If you’re installing a downloaded file, use dpkg -i package.deb not apt.